#include "ColorfulLed.h"

// 构造函数，引脚，led的数量
// 彩灯 端口 [GENERAL_PORT] 灯数 [LED_NUMBERS]
ColorfulLed::ColorfulLed (const int digitalPin, const int ledNumber) : NeoPixel(ledNumber, digitalPin) {
    ledNum = ledNumber;
}

// 初始化彩灯
void ColorfulLed::setColorfulLedInit() {
    // 必须的，不可省略
    this->begin();
}

// 彩灯 端口 [GENERAL_PORT] 颜色 [LED_COLOR]
void ColorfulLed::setColorfulLedAllColor(long ledColor) {
    // 设置每个LED的颜色
    for (int i = 0; i < ledNum; ++ i) {
        // 将颜色值转变为RGB
        this->setPixelColor(i, this->Color((ledColor >> 16), ((ledColor >> 8) & 0xff), (ledColor & 0xff)));
    }
    // 显示所有LED
    this->show();
    // 延迟，防止多次颜色写入出现错误
    delay(1);
}

// 彩灯 [COLORFUL_LED_NAME] 灯号 [LED_ORDER] 颜色 [LED_COLOR]
void ColorfulLed::setColorfulLedSingleColor(int ledOrder, long ledColor) {
    // 设置指定LED的颜色，1代表0号，2代表1号……
    this->setPixelColor(ledOrder - 1, this->Color((ledColor >> 16), ((ledColor >> 8) & 0xff), (ledColor & 0xff)));
    // 显示所有LED
    this->show();
    // 延迟，防止多次颜色写入出现错误
    delay(1);
}